package com.mjk.common.util;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.ServiceLoader;

public class ServiceLoaderUtils {

	/**
	 * 根据接口实现类名称，获取该类的实力
     */
	public static Object getExtendBean(Class<?> a) {
		Class<?>[] interfaces = a.getInterfaces();
		if (interfaces.length > 0) {
			ServiceLoader<?> load = ServiceLoader.load(interfaces[0]);
            for (Object service : load) {
                if (service.getClass().getName().equalsIgnoreCase(a.getName())) {
                    return service;
                }
            }
		}
		return null;		
	}
	/**
	 * 根据接口获取该接口的所有配置bean的实力
     */
	public static <T> List<T> getExtendBeans(Class<T> a) {		
		ServiceLoader<T> load = ServiceLoader.load(a);
		Iterator<T> it = load.iterator();
		List<T> list = new ArrayList<>();
		while (it.hasNext()) {
			list.add(it.next());				
		}		
		return list;		
	}
}
